<SCRIPT TYPE="text/javascript">
// autocalcular al descargar el formulario
// (para carga de productos desde la base de datos)
/* Copyright 2011 Alan Etkin, spametki@gmail.com. Con código fuente
tomado de ejemplos de los paquetes de software jQuery(c) y jqgrid(c).

Este programa se distribuye bajo los términos de la licencia AGPLv3.

This program is free software: you can redistribute it and/or modify
it under the terms of the Affero GNU General Public License as published by
the Free Software Foundation, version 3 of the License, or any later
version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the Affero GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/
$(document).ready(function(){
  try{
    var numeroFormatoMoneda;
    var listaFormatoMoneda = "";

    var codigo = "{{=form.vars.codigo or ''}}";
    var precio = "{{=form.vars.precio or 0}}";
    var umed = "{{=form.vars.umed or ''}}"; // id de umed
    var ncm = "{{=form.vars.ncm or ''}}";
    var sec = "{{=form.vars.sec or ''}}";
    var iva = "{{=form.vars.iva or ''}}"; // id del iva
    var bonif = "{{=form.vars.bonif or 0}}";
    var qty = "{{=form.vars.qty or 0}}";
    var ds = "{{=form.vars.ds or ''}}";

    var impIva = 0; // total de iva para detalle
    var total = 0;
    var neto = 0;

    var ivaAliquota = "{{=iva_aliquota or 0}}"; // alicuota
    var sugerido;

    var ivaDs = "{{=iva_ds or ''}}";
    var umedDs = "{{=umed_ds or ''}}";

    var cargaPorCodigo;
  }
  catch(e){
  /* error al descargar variables */
  }

  function formatoMoneda(valor){
    numeroFormatoMoneda = new Number(valor);
    return numeroFormatoMoneda.toFixed(2);
  }

  function calcularItem(){
    // Actualiza el formulario y calcula el total previo del ítem
    // (antes del ingreso a la base de datos)
    if (codigo != ""){
      neto = precio * qty;
      impIva = neto * ivaAliquota;
      total = neto + impIva - bonif;
      // completar formulario de ingreso de detalle

      /* Importante: ¡Estos elementos cambian
      con las modificaciones del model y los form en web2py! */

      $("input[name=codigo]").val(codigo);
      $("textarea[name=ds]").val(ds);
      $("select[name=iva]").val(iva);
      $("input[name=precio]").val(precio);
      $("select[name=umed]").val(umed);
      $("input[name=ncm]").val(ncm);
      $("input[name=sec]").val(sec);
      $("input[name=qty]").val(qty);
      $("input[name=bonif]").val(bonif);

      // actualizar previsualización
      $("#previo_imp_total").val(formatoMoneda(total));
      $("#previo_imp_iva").val(formatoMoneda(impIva));
      $("#previo_qty").val(qty);
      $("#previo_codigo").val(codigo);
      $("#previo_iva_ds").val(ivaDs);
      $("#previo_umed_ds").val(umedDs);
      $("#previo_ds").val(ds);
      $("#previo_ncm").val(ncm);
      $("#previo_sec").val(sec);
      $("#previo_precio").val(precio);
      $("#previo_bonif").val(bonif);
    }
  }

  function qtyChangeCallback(){
    qty = $("#previo_qty").val();
    calcularItem();
  }

  function bonifChangeCallback(){
    bonif = $("#previo_bonif").val();
    calcularItem();
  }

  function cargarCodigoCallback(data){
    if (data.existente == true){
      $("input[name=sugerir_producto]").val(data.id);
      sugerirProducto();
    }
    else{
      $("#carga_por_codigo").val("Inexistente");
    }
  }

  function cargarCodigo(){
    cargaPorCodigo = $("#carga_por_codigo").val();
    /*
    $.ajax({
      url: "{{=URL(c='consultas', f='productoporcodigo.json')}}" + "/" + cargaPorCodigo,
      dataType: 'json',
      success: cargarCodigoCallback
    });
    */
    $.getJSON("{{=URL(c='consultas', f='productoporcodigo.json')}}" + "/" + cargaPorCodigo, cargarCodigoCallback);
  }

  function callbackSugerirProducto(data){
    codigo = data.codigo;
    precio = data.precio;
    umed = data.umed;
    ncm = data.ncm;
    sec = data.sec;
    iva = data.iva;
    bonif = 0;
    qty = 1;
    ds = data.ds;

    umedDs = data.umed_ds;
    ivaDs = data.iva_ds;
    ivaAliquota = data.iva_aliquota;

    neto = 0;
    impIva = 0;
    total = 0;

    calcularItem();
  }

  function sugerirProducto(){
    sugerido = $("input[name=sugerir_producto]").val();
    /*$.ajax({
      url: "{{=URL(c='consultas', f='producto.json')}}" + "/" + String(sugerido),
      dataType: 'json',
      success: callbackSugerirProducto
    });*/
    $.getJSON("{{=URL(c='consultas', f='producto.json')}}" + "/" + String(sugerido), callbackSugerirProducto);
  }

  $("#previo_qty").change(qtyChangeCallback);
  $("#previo_bonif").change(bonifChangeCallback);
  $("#carga_por_codigo").change(cargarCodigo);

  //entrada de sugerencia (id del elemento: ¿tabla?_campo en base de datos)
  $("#sugerir_sugerir_producto").change(sugerirProducto);

  // cargar el ítem si se presionó el botón ingresar
  $('#boton_ingresar_detalle').bind('click', function(event){
    // actualizar los valores de qty y bonif
    qty = $("#previo_qty").val();
    bonif = $("#previo_bonif").val();
    calcularItem();
    $('#formulario_ingreso_detalle').submit();
  });
  calcularItem();
});
</SCRIPT>
